<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

require_once "coneccionbdd.php";

class usuarios_roles {

    // VALIDAR CAMPOS

    /**
     * 1)
     * Estos campos son exclusivos de la tabla producto_stock
     * y se sabe si son reqeridos observando en la bdd en la opcion si es nullo
     * @return type
     */
    public static function getCamposObligatorios() {
        return array(
            'id_rol' => 'id_rol',
            'id_usuario' => 'id_usuario',
        );
    }

    /**
     * 3)
     * @param type $data
     * @return type
     */
    public static function getMsjCamposObligatorios($data) {
        $camposobligatorios = static::getError($data);
        return array(
            'success' => $camposobligatorios["guardar"],
            'errors' => $camposobligatorios["errores"]
        );
    }

    /**
     * 4)
     * @return type retorna un arreglo con los mensjes para cada campo obligatorio
     */
    public static function getMensajes() {
        return array(
            'id_rol' => array('Ingrese un rol.'),
            'id_usuario' => array('Ingrese un usuario.')
        );
    }

    /**
     * 5) Retorna cuales son los campos obligatorios y no estan asignados valores
     * @param type $data=los datos a verifiar
     * @return type=array
     */
    public static function getError($data) {
        $camposobligatorios = static:: getCamposObligatorios();
        $mensajes_campos = static::getMensajes();
        $arrayerrors = array();
        $guardar = true;
        foreach ($data as $key => $value) {
            $existe_campo = array_key_exists($key, $camposobligatorios);
            if ($existe_campo) {
                $hay_dato = ($value == null || $value == "") ? false : true; //Verifica que el campono este nullo ni vacio
                if (!$hay_dato) {
                    $guardar = false;
                    $arrayerrors[$key] = $mensajes_campos[$key];
                }
            }
        }
        $resultado = array('guardar' => $guardar, 'errores' => $arrayerrors);
        return $resultado;
    }

    // INSERTAR, ACTUALIZAR Y ELIMINAR

    public static function setInsertar($datos) {

        $id_rol = $datos["id_rol"];
        $id_usuario = $datos["id_usuario"];


        $query = "INSERT INTO usuarios_roles (id_rol, id_usuario) "
                . "VALUES ('$id_rol','$id_usuario')";
        $resultado = mysqli_query(coneccionbdd::getConectar(), $query);
        mysqli_close(coneccionbdd::getConectar()); // Cerramos la conexion con la base de datos
        return $resultado;
    }

    public static function setActualizar($datos) {

        $id = $datos['id'];
        $id_rol = $datos["id_rol"];
        $id_usuario = $datos["id_usuario"];


        $sql = "UPDATE usuarios_roles SET id_rol='$id_rol', "
                . "id_usuario='$id_usuario' "
                . "WHERE id='$id'";

        $resultado = mysqli_query(coneccionbdd::getConectar(), $sql);
        mysqli_close(coneccionbdd::getConectar()); // Cerramos la conexion con la base de datos
        return $resultado;
    }

    public static function setEliminar($datos) {
        $id = $datos["id"];
        $sql = "DELETE from usuarios_roles WHERE id='$id";

        $resultado = mysqli_query(coneccionbdd::getConectar(), $sql);
        mysqli_close(coneccionbdd::getConectar()); // Cerramos la conexion con la base de datos
        return $resultado;
    }

    // obtener los datos para el grid

    public static function getUsuariosRolesTotal() {
        $query = "SELECT user.usuario_nombre as id_usuario,rol.rol_descripcion as id_rol FROM usuarios_roles t"
                . " inner join usuarios user on t.id_usuario=user.id"
                . " inner join roles rol on t.id_rol=rol.id";
  
        $resultado = mysqli_query(coneccionbdd::getConectar(), $query);

        $array_consulta = array();
        $count = 0;
        while ($fila = mysqli_fetch_array($resultado)) {
            array_push($array_consulta, $fila);
            $count++;
        }
        $array_resultado = array('total' => $count, 'result' => $array_consulta);
        return $array_resultado;
    }

    public static function getUsuariosRolesTotalRango($limit, $offset) {
        $query = "SELECT user.usuario_nombre as id_usuario,rol.rol_descripcion as id_rol  FROM usuarios_roles t"
                . " inner join usuarios user on t.id_usuario=user.id"
                . " inner join roles rol on t.id_rol=rol.id limit $offset ,$limit";
        $resultado = mysqli_query(coneccionbdd::getConectar(), $query);
        $array_consulta = array();
        $count = 0;
        while ($fila = mysqli_fetch_array($resultado)) {
            array_push($array_consulta, $fila);
            $count++;
        }
        $array_resultado = array('total' => $count, 'result' => $array_consulta);
        return $array_resultado;
    }

    public static function getUsuariosRoles($data) {
        //Informacion Total
        $totalInformacion = static::getUsuariosRolesTotal();
        $command_total = $totalInformacion['total'];
        //total
        $result['total'] = (int) $command_total;
        $current_page = isset($data['current']) ? (int) $data['current'] : 0; // control a error when 'current' not exist
        $limit = isset($data['rowCount']) ? $data['rowCount'] : 10;
        $offset = ($limit * ($current_page - 1));
        $result['current'] = $current_page;
        $result['rowCount'] = $limit;
        $resultadoPaginacion = static::getUsuariosRolesTotalRango($limit, $offset);
        $result['rows'] = $result['total'] != 0 ? $resultadoPaginacion['result'] : array();
        return $result;
    }

}
